<?php
/**
 * Core_Record_Field
 * 
 * @author naspeh
 * @version $Id: Field.php 659 2008-06-15 11:34:26Z naspeh $
 */
class Core_Record_Field
{
    /**
     * Имя поля
     *
     * @var string
     */
    protected $_name;
    /**
     * Заголовок 
     *
     * @var string
     */
    protected $_title;
    /**
     * Флаг сортировки
     *
     * @var boolean
     */
    protected $_order;
    /**
     * Тип поля
     *
     * @var string
     */
    protected $_type;
    /**
     * Конструктор
     *
     * @param string $name
     * @param array $options
     */
    public function __construct($name = null, array $options=null)
    {
        if (isset($name)) {
            $this->setName((string) $name);
        }
        
        if (isset($options)) {
            $this->setOptions($options);
        }
    }
    /**
     * Формирует вывод
     *
     * @param string $value
     * @return string
     */
    public static function render($value = '')
    {
        return '<td>' . (string) $value . '</td>';
    }
    /**
     * Формирует вывод заголовка
     *
     * @param string $value
     * @return string
     */    
    public static function renderHeader($value = '')
    {
        return '<th>' . (string) $value . '</th>';
    }
    /**
     * Устанавливает имя поля
     *
     * @param string $name
     * @return Core_Record_Field
     */
    public function setName($name)
    {
        $this->_name = (string) $name;
        return $this;
    }
    /**
     * Возвращает имя поля
     *
     * @return string
     */
    public function getName()
    {
        return $this->_name;
    }
    /**
     * Устанавливает заголовок
     *
     * @param string $title
     * @return Core_Record_Field
     */
    public function setTitle($title)
    {
        $this->_title = (string) $title;
        return $this;
    }
    /**
     * Возвращает заголовок 
     *
     * @return string
     */
    public function getTitle()
    {
        return $this->_title;
    }
    /**
     * Устанавливает флаг сортировки
     *
     * @param boolean $isOrder
     * @return Core_Record_Field
     */
    public function setOrder($isOrder=true)
    {
        $this->_order = (boolean) $isOrder;
        return $this;
    }
    /**
     * Возвращает флаг сортировки
     *
     * @return boolean
     */
    public function getOrder()
    {
        return $this->_order;
    }
    /**
     * Устанавливает тип
     *
     * @param string $type
     * @return Core_Record_Field
     */
    public function setType($type)
    {
        $this->_type = (string) $type;
        return $this;
    }
    /**
     * Возвращает тип
     *
     * @return string
     */
    public function getType()
    {
        return $this->_type;
    }
    /**
     * Устанавливает опции
     *
     * @param array $options
     * @return Core_Record_Field
     */
    public function setOptions(array $options)
    {
        foreach ($options as $key => $value) {
            $method = 'set' . ucfirst($key);
            if (in_array($method, array('setName'))) {
                continue;
            }
            if (method_exists($this, $method)) {
                // Setter exists; use it
                $this->$method($value);
            } 
        }
        return $this;
    }
}